package com.harmontronics.hanma.paas.paas.domain.organization.service;

import com.harmontronics.hanma.paas.paas.common.PageBase;
import com.harmontronics.hanma.paas.paas.domain.iam.entity.HmMenu;
import com.harmontronics.hanma.paas.paas.domain.organization.entity.ChangePassword;
import com.harmontronics.hanma.paas.paas.domain.organization.entity.HmUser;
import com.harmontronics.hanma.paas.paas.domain.organization.entity.HmUserHigherUpdate;
import com.harmontronics.hanma.paas.paas.domain.organization.entity.HmUserPwd;
import com.harmontronics.hanma.paas.paas.domain.organization.entity.SubmitterUser;
import com.harmontronics.hanma.paas.paas.domain.organization.entity.UserMoveOrg;
import com.harmontronics.hanma.paas.paas.domain.organization.entity.UserSort;
import com.harmontronics.hanma.paas.paas.domain.organization.repository.po.HmUserPO;
import java.util.List;

public interface IHmUserService {

    String login(HmUser userLogin);

    void logout();

    HmUser get(Long id);

    PageBase<HmUser> getPageUserWithParams(
            int pageNo,
            int pageSize,
            Long orgId,
            String name,
            String jobNumber,
            Integer status,
            String email,
            String mobile,
            String userName);

    PageBase<HmUserPO> getPageUserWithParams(int pageNo,int pageSize, String searchKey);

    List<HmUser> getList();

    Long save(HmUser user);

    void update(HmUser user);

    void remove(List<Long> idList);


    void moveOrg(UserMoveOrg moveOrgDto);

    void quit(List<Long> idsList);

    boolean uniqueCheck(Long id, String field, String value);

    void userSort(UserSort userSort);

    void changePassword(ChangePassword changePasswordInputDto);

    void resetPassword(List<Long> idList);

    List<HmMenu> getAuthWithUserId();

    List<HmUser> getUsersByIds(List<Long> idList);

    HmUser getUserWithToken();

    void updatePassword(HmUserPwd hmUserPwd);

    List<SubmitterUser> selectSubmitterUserIn(List<Long> submitterIds);

    void updateHigher(HmUserHigherUpdate hmUserHigherUpdate);

    List<HmUser> findByManageOrg(Long orgId);

}
